What is @wordpress/deprecated?
@wordpress/deprecated is a utility package used in WordPress development to handle deprecated features. It provides a way to mark functions, methods, or other features as deprecated, allowing developers to notify users of the deprecation and suggest alternatives.
What are @wordpress/deprecated's main functionalities?
Marking a function as deprecated
This feature allows developers to mark a function as deprecated. The `deprecated` function is called with the name of the deprecated function, the version since it is deprecated, an alternative function, and the plugin name. This helps in notifying users about the deprecation and suggesting an alternative.
const deprecated = require('@wordpress/deprecated');
function oldFunction() {
deprecated('oldFunction', {
version: '1.0.0',
alternative: 'newFunction',
plugin: 'my-plugin'
});
// Function logic
}
Other packages similar to @wordpress/deprecated
util-deprecate
The `util-deprecate` package is a Node.js utility that provides a similar functionality to mark functions as deprecated. It is a lightweight solution that outputs a warning message when a deprecated function is called. Compared to @wordpress/deprecated, it is more general-purpose and not specifically tailored for WordPress development.
depd
The `depd` package is another Node.js utility for deprecating functions and methods. It provides a way to mark functions as deprecated and outputs a warning message when they are used. Like `util-deprecate`, it is not specific to WordPress but serves a similar purpose in notifying developers and users about deprecated features.
Deprecated
Deprecation utility for WordPress. Logs a message to notify developers about a deprecated feature.
Installation
Install the module
npm install @wordpress/deprecated --save
This package assumes that your code will run in an ES2015+ environment. If you're using an environment that has limited or no support for ES2015+ such as lower versions of IE then using core-js or @babel/polyfill will add support for these methods. Learn more about it in Babel docs.
Hook
The deprecated
action is fired with three parameters: the name of the deprecated feature, the options object passed to deprecated, and the message sent to the console.
Example:
import { addAction } from '@wordpress/hooks';
function addDeprecationAlert( message, { version } ) {
alert( `Deprecation: ${ message }. Version: ${ version }` );
}
addAction(
'deprecated',
'my-plugin/add-deprecation-alert',
addDeprecationAlert
);
API
# default
Logs a message to notify developers about a deprecated feature.
Usage
import deprecated from '@wordpress/deprecated';
deprecated( 'Eating meat', {
since: '2019.01.01'
version: '2020.01.01',
alternative: 'vegetables',
plugin: 'the earth',
hint: 'You may find it beneficial to transition gradually.',
} );
Parameters
- feature
string
: Name of the deprecated feature. - options
[Object]
: Personalisation options - options.since
[string]
: Version in which the feature was deprecated. - options.version
[string]
: Version in which the feature will be removed. - options.alternative
[string]
: Feature to use instead - options.plugin
[string]
: Plugin name if it's a plugin feature - options.link
[string]
: Link to documentation - options.hint
[string]
: Additional message to help transition away from the deprecated feature.
# logged
Object map tracking messages which have been logged, for use in ensuring a
message is only logged once.
Type
Record<string, true | undefined>